﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        public static int[] a=new int[5];
        static void Main(string[] args)
        {
            //1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。
            //如果是一个方法只能有一个返回值，那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。
            //参考步骤：
            //定义一个一维数组，数组中存放一些数据（控制台输入）。
            //定义几个变量：max、min、sum、avg
            //定义一个方法，方法返回数组元素之和,方法形参有max min avg。
            //请用ref和out各做一遍，并在注释中，描述他们的区别。
            for (int i = 0; i < a.Length; i++)
            {
                Console.WriteLine("数字传输"+(i+1));
                a[i] = int.Parse(Console.ReadLine());
            }
                int s;//提前声明返回参数变量
                int b;
                int c;
                int d;

                No1(out s,out b,out c,out d);//调用函数返回数值
                Console.WriteLine("整数数组中的最大值是：" + s+ " 最小值是：" + b+ "  和是：" + c+ "平均数是：" + d);
                Console.ReadKey();
        
        }
        static void No1(out int max,out int min,out int sum,out int avg) {
            max = a[0]; min = a[0]; sum = 0;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i]>max)
                {
                    max = a[i];
                }
                if (a[i]<min)
                {
                    min = a[i];
                }
                sum = sum + a[i];
            }
            avg = sum / a.Length;
 

            //当你在使用ref传递参数的时候，ref修饰的参数必须要有值，但是out可以使用一个未赋值的变量作为参数传递。
        }
    }
}
